﻿using System;
using System.Text.RegularExpressions;
using FBWMS.Properties;

namespace FBWMS
{
    class G_CommonClassChk
    {
		public G_CommonClassChk()
		{
		}

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Chk_Numeric
        // Parameter : str_TargetValue      :string     :対象値
        // Return    : True Or False
        // Contents  : 数値チェック
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Chk_Numeric(string str_TargetValue)
        {
			try
			{
				//ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.G_Chk_Numeric, "G_Chk_Numeric");

                //空白の際は正常とみなす
                if (str_TargetValue == ""){
                    return true;
                }

                Regex regexNu = new Regex(@"^[0-9]+$");

                //数値チェック
                if (!regexNu.IsMatch(str_TargetValue))
                {
                    return false;
                }

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.GChkNumeric処理終了, "G_Chk_Numeric");

                return true;
            }
            catch (Exception err)
            {

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.GChkNumeric処理エラー + err.Message, "G_Chk_Numeric");

                return false;
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Chk_Null
        // Parameter : str_TargetValue      :string     :対象値
        // Return    : True Or False
        // Contents  : 空白チェック
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Chk_Null(string str_TargetValue)
        {
            try
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.G_Chk_Null, "G_Chk_Null");

                //空白チェック
                if (str_TargetValue == "")
                {
                    return false;
                }

                //Nullチェック
                if (str_TargetValue == null)
                {
                    return false;
                }

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.GChkNull処理終了, "G_Chk_Null");

                return true;
            }
            catch (Exception err)
            {

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.GChkNull処理エラー + err.Message, "G_Chk_Null");

                return false;
            }
        }

        /// <summary>
        /// 
        /// 验证是否是数字
        /// </summary>
        /// <param name="souStr"></param>
        /// <param name="Patter"></param>
        /// <param name="Length"></param>
        /// <returns></returns>
        public static bool G_GHK_Decimal(string souStr, int Patter, int Length)
        {
            try
            {
                string ValiString = string.Empty;
                switch (Length)
                {
                    case 2:
                        if (Length == 0)
                        {
                            ValiString = @"^(-|\+)?\d+$";
                        }
                        else
                        {
                            ValiString = @"^-?\d+(\.\d{0," + Length + "})?$";
                        }
                        break;
                    default:
                        break;

                }

                Regex Reg = new Regex(ValiString);

                if (Reg.IsMatch(souStr) && (System.Text.Encoding.Default.GetByteCount(souStr) == souStr.Length))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception err)
            {
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, "G_GHK_Decimal" + err.Message, "G_GHK_Decimal");
                return false;
            }
        }

        //////////////////////////////////////////////////////////////////////////////
        //// OutLine   : G_Chk_Null
        //// Parameter : strValue         :string     :string
        //// Return    : True Or False    :true is datetime 
        //// Contents  : Check DateTime(验证是否是日期格式)
        //// Makes     : Michael
        //// History   : 2008-12-04       : michael
        ////           :
        //////////////////////////////////////////////////////////////////////////////
        //public static bool G_Chk_DateTime(string strValue)
        //{
        //    if (null == strValue)
        //    {
        //        return false;
        //    }

        //    string regexDate = @"[1-2]{1}[0-9]{3}((-|\/){1}(([0]?[1-9]{1})|(1[0-2]{1}))((-|\/){1}((([0]?[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1})))( (([0-1]{1}[0-9]{1})|2[0-3]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{3})?)?)?)?$";

        //    if (Regex.IsMatch(strValue, regexDate))
        //    {
        //        //以下各月份日期验证，保证验证的完整性
        //        int _IndexY = -1;
        //        int _IndexM = -1;
        //        int _IndexD = -1;

        //        if (-1 != (_IndexY = strValue.IndexOf("-")))
        //        {
        //            _IndexM = strValue.IndexOf("-", _IndexY + 1);
        //            _IndexD = strValue.IndexOf(":");
        //        }
        //        else
        //        {
        //            _IndexY = strValue.IndexOf("/");
        //            _IndexM = strValue.IndexOf("/", _IndexY + 1);
        //            _IndexD = strValue.IndexOf(":");
        //        }

        //        //不包含日期部分，直接返回true
        //        if (-1 == _IndexM)
        //            return true;

        //        if (-1 == _IndexD)
        //        {
        //            _IndexD = strValue.Length + 3;
        //        }

        //        int iYear = Convert.ToInt32(strValue.Substring(0, _IndexY));
        //        int iMonth = Convert.ToInt32(strValue.Substring(_IndexY + 1, _IndexM - _IndexY - 1));
        //        int iDate = Convert.ToInt32(strValue.Substring(_IndexM + 1, _IndexD - _IndexM - 4));

        //        //判断月份日期
        //        if ((iMonth < 8 && 1 == iMonth % 2) || (iMonth > 8 && 0 == iMonth % 2))
        //        {
        //            if (iDate < 32)
        //                return true;
        //        }
        //        else
        //        {
        //            if (iMonth != 2)
        //            {
        //                if (iDate < 31)
        //                    return true;
        //            }
        //            else
        //            {
        //                //闰年
        //                if ((0 == iYear % 400) || (0 == iYear % 4 && 0 < iYear % 100))
        //                {
        //                    if (iDate < 30)
        //                        return true;
        //                }
        //                else
        //                {
        //                    if (iDate < 29)
        //                        return true;
        //                }
        //            }
        //        }
        //    }

        //    return false;
        //}

    }
}
